package com.tongda.core.utils;

import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;

public final class ActivityUtil {
	/**
	 * 默认Toast方法，可以指定吐司时间长短，位置是否居中。
	 * 
	 * @param activity
	 *            当前的Activity
	 * @param content
	 *            吐司显示内容
	 * @param isLong
	 *            是否长时间显示，值为true时长时间显示，为false时短时间显示
	 * @param isCenter
	 *            是否居中显示，值为true时居中显示，为false时默认显示
	 * */
	public static void Toast(final Activity activity, final String content,
			final boolean isLong, final boolean isCenter) {
		activity.runOnUiThread(new Runnable() {
			@Override
			public void run() {
				Toast toast = null;
				if (content != null) {
					if (isLong) {
						toast = Toast.makeText(activity, content,
								Toast.LENGTH_LONG);
					} else {
						toast = Toast.makeText(activity, content,
								Toast.LENGTH_SHORT);
					}
					if (isCenter)
						toast.setGravity(Gravity.CENTER, 0, 0);
				} else {
					toast = Toast.makeText(activity, "内容NULL异常",
							Toast.LENGTH_SHORT);
				}
				toast.show();
			}
		});
	}

	/**
	 * 自定义样式的Toast方法，可以指定吐司时间长短，位置是否居中；样式以View的形式传入,吐司的内容需要在View上体现
	 * 
	 * @param activity
	 *            当前的Activity
	 * @param view
	 *            自定义的吐司显示样式，显示内容需要在view上
	 * @param isLong
	 *            是否长时间显示，值为true时长时间显示，为false时短时间显示
	 * @param isCenter
	 *            是否居中显示，值为true时居中显示，为false时默认显示
	 * */
	public static void ToastView(final Activity activity, final View view,
			final boolean isLong, final boolean isCenter) {
		activity.runOnUiThread(new Runnable() {

			@Override
			public void run() {
				Toast toast = new Toast(activity.getApplicationContext());
				toast.setView(view);
				if (isLong) {
					toast.setDuration(Toast.LENGTH_LONG);
				} else {
					toast.setDuration(Toast.LENGTH_SHORT);
				}
				if (isCenter)
					toast.setGravity(Gravity.CENTER, 0, 0);
				toast.show();
			}
		});
	}

	/**
	 * Activity不需要参数的跳转方法
	 * 
	 * @param activity
	 *            当前Activity
	 * @param isCancel
	 *            是否销毁当前的Activity
	 * @param target
	 *            目标Activity
	 * */
	public static void switchActivity(Activity activity, boolean isCancel,
			Class<? extends Activity> target) {
		Intent intent = new Intent(activity, target);
		if (isCancel)
			activity.finish();
		activity.startActivity(intent);
	}

	/**
	 * Activity需要参数的跳转方法
	 * 
	 * @param activity
	 *            当前Activity
	 * @param isCancel
	 *            是否销毁当前的Activity
	 * @param target
	 *            目标Activity
	 * @param params
	 *            跳转时intent装入的参数Map
	 * */
	public static void switchActivity(Activity activity, boolean isCancel,
			Class<? extends Activity> target, Map<String, Object> params) {
		Intent intent = new Intent(activity, target);
		if (isCancel)
			activity.finish();
		if (null != params) {
			for (Map.Entry<String, Object> item : params.entrySet()) {
				IntentUtil.setValueToIntent(intent, item.getKey(),
						item.getValue());
			}
		}
		activity.startActivity(intent);
	}

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 * 
	 * @param context
	 *            上下文，一般为Activity
	 * @param dpValue
	 *            dp数据值
	 * @return px像素值
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 * 
	 * @param context
	 *            上下文，一般为Activity
	 * @param pxValue
	 *            px像素值
	 * @return dp数据值
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}
}
